package ve.usb.buscame;

import java.io.*;
import java.net.InetAddress;
import java.net.Socket;

import android.content.Intent;
import android.os.Looper;
import android.util.Log;
 
public class Cliente implements Runnable {
	static String str="";
	static Socket socket;
	static String userConv = "";
	static boolean finalizarEscucharCliente = true;
		
	public void run() {
		try {
			Log.d("Cliente", "Inicie Cliente.run()");
             InetAddress serverAddr = InetAddress.getByName(Login.ipServidor);
             Log.d("Cliente", "Conectando con el Servidor '"+serverAddr+"'");
             //try{
            	  socket = new Socket(serverAddr, 4444);
             //}catch(Exception e){
            	//  Log.d("ErrorSocket", "Cliente: Error", e);
             //}
            
             Log.d("Cliente", "socket.isClosed(): "+socket.isClosed());
             Looper.prepare();
             //EscucharCliente escucharCliente = new EscucharCliente();
    
//             Thread escuchar = new Thread(escucharCliente);
//             escuchar.start();
             
             int x=0;
                 try {
                	 //Looper.prepare();
                	 String mensaje = "";
                	 PrintWriter out = new PrintWriter
						(new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);
                	 
                	 // enviando el login para decirle al Server que estoy conectado
                	 Log.d("Cliente", "Enviando loginUsuario: "+Login.usuario);
                	 out.println(Login.usuario);
                	 
                	 //do {
                	 while (!Principal.salir) {
                		 //if (recibido){
                		 //	 Log.d("Cliente", "Cliente: Recibido Hilo ################ '"+EscucharCliente.mensajeHilo+"' ##############");
                		 //	 recibido = false;
                		 //}
                		 if (!Conversacion.opcionMensaje.trim().equals("")){
                		 	//String delims = "[|]";
                		 	String[] tokens = Conversacion.opcionMensaje.trim().toString().split("[|]");
                	 	
                		 	if (tokens.length > 0){
                		 		Log.d("Cliente", "tokens[0]:" + tokens[0] + "'");
                		 		Log.d("Cliente", "tokens[1]:" + tokens[1] + "'");
                		 	
                		 		if (tokens[0].trim().equals("1") && (!tokens[1].equals(""))) { // enviar un mensaje
                		 			mensaje = userConv.trim()+"|"+tokens[1];
									Log.d("Cliente", "Cliente: Enviando el mensaje: '" + mensaje + "'");
									out.println(mensaje);
									out.flush(); 
									Log.d("Cliente", "Cliente: Mensaje enviado!");
									Conversacion.opcionMensaje = "";
									x++;
                		 		}
                		 		// caso en que el usuario desea enviar un mensaje broadcast a sus amigos online
                		 		if (tokens[0].trim().equals("Broadcast")){
	                    			mensaje = "Broadcast|" + tokens[1] + "|" + tokens[2];
	                    			out.println(mensaje);
	                    			out.flush();
	                                Log.d("Cliente", "Cliente: Envio de mensaje broadcast.");
	                                Conversacion.opcionMensaje = ""; 
                		 		}
                    		 
                		 		if (Conversacion.opcionMensaje.trim().equals("3")) {
                		 			mensaje = "null|1500";
	                                out.println(mensaje);
	                                out.flush();
	                    			Log.d("TCP", "C: Enviado.");
	                    			Conversacion.opcionMensaje = "";
	                    			//Conversacion.hilo.stop();
                		 		}
                		 	}// fin if tokens > 0
                		 }
                	 }//fin del while
                	 //out.close();
        }catch(Exception e) {
            Log.e("Cliente", "Servidor: Error", e);
        } finally {
        	Log.d("Cliente", "$$$$$$$$ finally $$$$$$$$");
        }
     } catch (Exception e) {
          Log.e("Cliente", "Cliente: Error", e);
     }finally{
    	 Log.w("Cliente","Finalizo Cliente. Cambiando finalizarEscucharCliente a false.");
    	 finalizarEscucharCliente = false;
     }//fin del try principal
    }
}